#include <iostream>
#include <vector>

using namespace std;

int n;
string f;
vector<int> A, B;

vector<int> mul(vector<int>& A, int b)
{
	vector<int> C;
	int t = 0;
	for (int i = 0; i < A.size() || t; i++)
	{
		if (i < A.size()) t += A[i] * b;
		C.push_back(t % 10);
		t /= 10;
	}
	while (C.size() > 1 && C.back() == 0) C.pop_back();
	return C;
}

vector<int> add(vector<int> A, vector<int> B)
{
	vector<int> C;
	int n = max(A.size(), B.size());
	int t = 0;
	for (int i = 0; i < n; i++)
	{
		if (i < A.size()) t += A[i];
		if (i < B.size()) t += B[i];
		C.push_back(t % 10);
		t /= 10;
	}
	if (t) C.push_back(t);
	return C;

}

int main()
{
	cin >> n >> f;
	string s;
	int pos;
	for (int i = 0; i < f.size(); i++)
	{
		if (f[i] == '.') pos = i;
		if (f[i] != '.') s += f[i];
	}
	pos = f.size() - pos - 1;
	//  cout << s << endl;
	f = s;
	s.clear();
	for (int i = f.size() - 1; i >= 0; i--) A.push_back(f[i] - '0');
	vector<int> C;
	for (int i = 1; i <= n; i++)
	{
		C = mul(A, 2);
		A.clear(); A = C; C.clear();
	}
	//  for(int i = 0; i < A.size(); i++) cout << A[i] ; 
	for (int i = 1; i <= A.size() - pos; i++)
	{
		s += A[A.size() - i] + '0';
	}
	string b, c;
	//  cout << s << endl;
	for (int i = pos - 1; i >= 0; i--) b += A[i] + '0';
	//  cout << b << endl; 
	for (int i = 0; i < b.size() - pos; i++) c += b[i];
	A.clear(); C.clear();
	//  cout << c << endl;

	for (int i = s.size() - 1; i >= 0; i--) A.push_back(s[i] - '0');
	for (int i = c.size() - 1; i >= 0; i--) B.push_back(c[i] - '0');
	if (b[0] >= '5') A[0]++;
	C = add(A, B);
	for(int i = C.size() - 1; i >= 0; i--) cout << C[i];
	return 0;
}
